package com.atguigu.datasource;

import org.junit.Test;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * projectName: day04_jdbc
 *
 * @author: 赵伟风
 * time: 2021/11/26 16:53
 * description:druid连接连接池的基本使用
 *    todo 总结durid连接连接池的基本使用！
 *        1.所有的第三方连接池都是基于javax.sql.DataSource接口实现的！
 *        2.获取连接的方法全是 getConnection();
 *        3.回收连接的方法 connection.close();
 *        4.druid连接池可以直接new DruidDataSource();
 *        5.druid连接池还可以通过工厂模式创建！
 */
public class DataSourceBaseUse {


    @Test
    public void test1() throws SQLException {

        Connection connection = JdbcPool.getConnection();
        //sql

        JdbcPool.close(connection);

    }

    @Test
    public void test2() throws SQLException{

        Connection connection = JdbcPool.getConnection();
        //sql

        JdbcPool.close(connection);


    }



    public static void main(String[] args) throws Exception {


        //2.工厂模式创建
//        Properties properties = new Properties();
//
//        properties.setProperty("driverClassName","com.mysql.jdbc.Driver");
//
//
//        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);


        //1.创建一个连接池
//        DruidDataSource dataSource = new DruidDataSource();
//
//        //2.设置必要参数 driver url user password
//        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
//        dataSource.setUrl("jdbc:mysql:///test1");
//        dataSource.setUsername("root");
//        dataSource.setPassword("root");
//
//        //3.设置可选属性，连接池的初始化容量  最大容量  等待时间【到达最大数量】
//        dataSource.setInitialSize(5);
//        dataSource.setMaxActive(10);
//        dataSource.setMaxWait(1000);
//
//
//        //4.测试
//        for (int i = 0; i < 50; i++) {
//            Connection connection = dataSource.getConnection();
//            System.out.println("connection = " + connection);
//            //连接池利用装饰者模式，将原连接的close从释放资源改成回收连接!
//            connection.close();
//        }


    }


}
